home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Apple WWDC 1996
/
WWDC96_1996 (CD).toast
/
Technology Materials
/
MacOS 8 Resources
/
Developer Tools
/
Mac OS 8 Interfaces & Libraries
/
Interfaces
/
CIncludes
/
Connections.h
< prev
next >
Wrap
C/C++ Source or Header
|
1996-05-01
|
13KB
|
385 lines
/*
File: Connections.h
Contains: Communications Toolbox Connection Manager Interfaces.
Version: Technology: System 7.5
Release: Universal Interfaces 3.0d3 on Copland DR1
Copyright: © 1984-1996 by Apple Computer, Inc. All rights reserved.
Bugs?: If you find a problem with this file, send the file and version
information (from above) and the problem description to:
Internet: apple.bugs@applelink.apple.com
AppleLink: APPLE.BUGS
*/
#ifndef __CONNECTIONS__
#define __CONNECTIONS__
#ifndef __WINDOWS__
#include <Windows.h>
#endif
#ifndef __DIALOGS__
#include <Dialogs.h>
#endif
#ifndef __CTBUTILITIES__
#include <CTBUtilities.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
#if PRAGMA_IMPORT_SUPPORTED
#pragma import on
#endif
#if PRAGMA_ALIGN_SUPPORTED
#pragma options align=mac68k
#endif
#if FOR_SYSTEM7_ONLY
enum {
/* current Connection Manager version */
curCMVersion = 2, /* current Connection Manager Environment Record version */
curConnEnvRecVers = 0, /* CMErr */
cmGenericError = -1,
cmNoErr = 0,
cmRejected = 1,
cmFailed = 2,
cmTimeOut = 3,
cmNotOpen = 4,
cmNotClosed = 5,
cmNoRequestPending = 6,
cmNotSupported = 7,
cmNoTools = 8,
cmUserCancel = 9,
cmUnknownError = 11
};
typedef OSErr CMErr;
enum {
cmData = 1L << 0,
cmCntl = 1L << 1,
cmAttn = 1L << 2,
cmDataNoTimeout = 1L << 4,
cmCntlNoTimeout = 1L << 5,
cmAttnNoTimeout = 1L << 6,
cmDataClean = 1L << 8,
cmCntlClean = 1L << 9,
cmAttnClean = 1L << 10, /* Only for CMRecFlags (not CMChannel) in the rest of this enum */
cmNoMenus = 1L << 16,
cmQuiet = 1L << 17,
cmConfigChanged = 1L << 18
};
/* CMRecFlags and CMChannel */
/* Low word of CMRecFlags is same as CMChannel */
typedef long CMRecFlags;
typedef short CMChannel;
enum {
cmStatusOpening = 1L << 0,
cmStatusOpen = 1L << 1,
cmStatusClosing = 1L << 2,
cmStatusDataAvail = 1L << 3,
cmStatusCntlAvail = 1L << 4,
cmStatusAttnAvail = 1L << 5,
cmStatusDRPend = 1L << 6, /* data read pending */
cmStatusDWPend = 1L << 7, /* data write pending */
cmStatusCRPend = 1L << 8, /* cntl read pending */
cmStatusCWPend = 1L << 9, /* cntl write pending */
cmStatusARPend = 1L << 10, /* attn read pending */
cmStatusAWPend = 1L << 11, /* attn write pending */
cmStatusBreakPend = 1L << 12,
cmStatusListenPend = 1L << 13,
cmStatusIncomingCallPresent = 1L << 14,
cmStatusReserved0 = 1L << 15
};
typedef unsigned long CMStatFlags;
enum {
cmDataIn = 0,
cmDataOut = 1,
cmCntlIn = 2,
cmCntlOut = 3,
cmAttnIn = 4,
cmAttnOut = 5,
cmRsrvIn = 6,
cmRsrvOut = 7
};
typedef unsigned short CMBufFields;
typedef Ptr CMBuffers[8];
typedef long CMBufferSizes[8];
typedef const long *ConstCMBufferSizesParam;
enum {
cmSearchSevenBit = 1L << 0
};
typedef unsigned short CMSearchFlags;
enum {
cmFlagsEOM = 1L << 0
};
typedef unsigned short CMFlags;
struct ConnEnvironRec {
short version;
long baudRate;
short dataBits;
CMChannel channels;
Boolean swFlowControl;
Boolean hwFlowControl;
CMFlags flags;
};
typedef struct ConnEnvironRec ConnEnvironRec;
typedef ConnEnvironRec *ConnEnvironRecPtr;
typedef struct ConnRecord ConnRecord;
typedef ConnRecord *ConnPtr;
typedef ConnPtr *ConnHandle;
typedef pascal long (*ConnectionToolDefProcPtr)(ConnHandle hConn, short msg, long p1, long p2, long p3);
typedef pascal void (*ConnectionSearchCallBackProcPtr)(ConnHandle hConn, Ptr matchPtr, long refNum);
typedef pascal void (*ConnectionCompletionProcPtr)(ConnHandle hConn);
typedef pascal void (*ConnectionChooseIdleProcPtr)(void );
#if GENERATINGCFM
typedef UniversalProcPtr ConnectionToolDefUPP;
typedef UniversalProcPtr ConnectionSearchCallBackUPP;
typedef UniversalProcPtr ConnectionCompletionUPP;
typedef UniversalProcPtr ConnectionChooseIdleUPP;
#else
typedef ConnectionToolDefProcPtr ConnectionToolDefUPP;
typedef ConnectionSearchCallBackProcPtr ConnectionSearchCallBackUPP;
typedef ConnectionCompletionProcPtr ConnectionCompletionUPP;
typedef ConnectionChooseIdleProcPtr ConnectionChooseIdleUPP;
#endif
struct ConnRecord {
short procID;
CMRecFlags flags;
CMErr errCode;
long refCon;
long userData;
ConnectionToolDefUPP defProc;
Ptr config;
Ptr oldConfig;
long asyncEOM;
long reserved1;
long reserved2;
Ptr cmPrivate;
CMBuffers bufferArray;
CMBufferSizes bufSizes;
long mluField;
CMBufferSizes asyncCount;
};
enum {
/* CMIOPB constants and structure */
cmIOPBQType = 10,
cmIOPBversion = 0
};
struct CMIOPB {
QElemPtr qLink;
short qType; /* cmIOPBQType */
ConnHandle hConn;
Ptr theBuffer;
long count;
CMFlags flags;
ConnectionCompletionUPP userCompletion;
long timeout;
CMErr errCode;
CMChannel channel;
long asyncEOM;
long reserved1;
short reserved2;
short version; /* cmIOPBversion */
long refCon; /* for application */
long toolData1; /* for tool */
long toolData2; /* for tool */
};
typedef struct CMIOPB CMIOPB;
typedef CMIOPB *CMIOPBPtr;
enum {
uppConnectionToolDefProcInfo = kPascalStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(long)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ConnHandle)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long)))
| STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long)))
| STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(long))),
uppConnectionSearchCallBackProcInfo = kPascalStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ConnHandle)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Ptr)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))),
uppConnectionCompletionProcInfo = kPascalStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ConnHandle))),
uppConnectionChooseIdleProcInfo = kPascalStackBased
};
#if GENERATINGCFM
#define CallConnectionToolDefProc(userRoutine, hConn, msg, p1, p2, p3) \
CallUniversalProc((UniversalProcPtr)(userRoutine), uppConnectionToolDefProcInfo, (hConn), (msg), (p1), (p2), (p3))
#define CallConnectionSearchCallBackProc(userRoutine, hConn, matchPtr, refNum) \
CallUniversalProc((UniversalProcPtr)(userRoutine), uppConnectionSearchCallBackProcInfo, (hConn), (matchPtr), (refNum))
#define CallConnectionCompletionProc(userRoutine, hConn) \
CallUniversalProc((UniversalProcPtr)(userRoutine), uppConnectionCompletionProcInfo, (hConn))
#define CallConnectionChooseIdleProc(userRoutine) \
CallUniversalProc((UniversalProcPtr)(userRoutine), uppConnectionChooseIdleProcInfo)
#else
#define CallConnectionToolDefProc(userRoutine, hConn, msg, p1, p2, p3) \
(*(userRoutine))((hConn), (msg), (p1), (p2), (p3))
#define CallConnectionSearchCallBackProc(userRoutine, hConn, matchPtr, refNum) \
(*(userRoutine))((hConn), (matchPtr), (refNum))
#define CallConnectionCompletionProc(userRoutine, hConn) \
(*(userRoutine))((hConn))
#define CallConnectionChooseIdleProc(userRoutine) \
(*(userRoutine))()
#endif
#if GENERATINGCFM
#define NewConnectionToolDefProc(userRoutine) \
(ConnectionToolDefUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppConnectionToolDefProcInfo, GetCurrentArchitecture())
#define NewConnectionSearchCallBackProc(userRoutine) \
(ConnectionSearchCallBackUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppConnectionSearchCallBackProcInfo, GetCurrentArchitecture())
#define NewConnectionCompletionProc(userRoutine) \
(ConnectionCompletionUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppConnectionCompletionProcInfo, GetCurrentArchitecture())
#define NewConnectionChooseIdleProc(userRoutine) \
(ConnectionChooseIdleUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppConnectionChooseIdleProcInfo, GetCurrentArchitecture())
#else
#define NewConnectionToolDefProc(userRoutine) \
((ConnectionToolDefUPP) (userRoutine))
#define NewConnectionSearchCallBackProc(userRoutine) \
((ConnectionSearchCallBackUPP) (userRoutine))
#define NewConnectionCompletionProc(userRoutine) \
((ConnectionCompletionUPP) (userRoutine))
#define NewConnectionChooseIdleProc(userRoutine) \
((ConnectionChooseIdleUPP) (userRoutine))
#endif
extern pascal CMErr InitCM(void );
extern pascal Handle CMGetVersion(ConnHandle hConn);
extern pascal short CMGetCMVersion(void );
extern pascal ConnHandle CMNew(short procID, CMRecFlags flags, ConstCMBufferSizesParam desiredSizes, long refCon, long userData);
extern pascal void CMDispose(ConnHandle hConn);
extern pascal CMErr CMListen(ConnHandle hConn, Boolean async, ConnectionCompletionUPP completor, long timeout);
extern pascal CMErr CMAccept(ConnHandle hConn, Boolean accept);
extern pascal CMErr CMOpen(ConnHandle hConn, Boolean async, ConnectionCompletionUPP completor, long timeout);
extern pascal CMErr CMClose(ConnHandle hConn, Boolean async, ConnectionCompletionUPP completor, long timeout, Boolean now);
extern pascal CMErr CMAbort(ConnHandle hConn);
extern pascal CMErr CMStatus(ConnHandle hConn, CMBufferSizes sizes, CMStatFlags *flags);
extern pascal void CMIdle(ConnHandle hConn);
extern pascal void CMReset(ConnHandle hConn);
extern pascal void CMBreak(ConnHandle hConn, long duration, Boolean async, ConnectionCompletionUPP completor);
extern pascal CMErr CMRead(ConnHandle hConn, void *theBuffer, long *toRead, CMChannel theChannel, Boolean async, ConnectionCompletionUPP completor, long timeout, CMFlags *flags);
extern pascal CMErr CMWrite(ConnHandle hConn, const void *theBuffer, long *toWrite, CMChannel theChannel, Boolean async, ConnectionCompletionUPP completor, long timeout, CMFlags flags);
extern pascal CMErr CMIOKill(ConnHandle hConn, short which);
extern pascal void CMActivate(ConnHandle hConn, Boolean activate);
extern pascal void CMResume(ConnHandle hConn, Boolean resume);
extern pascal Boolean CMMenu(ConnHandle hConn, short menuID, short item);
extern pascal Boolean CMValidate(ConnHandle hConn);
extern pascal void CMDefault(Ptr *theConfig, short procID, Boolean allocate);
extern pascal Handle CMSetupPreflight(short procID, long *magicCookie);
extern pascal Boolean CMSetupFilter(short procID, const void *theConfig, short count, DialogPtr theDialog, EventRecord *theEvent, short *theItem, long *magicCookie);
extern pascal void CMSetupSetup(short procID, const void *theConfig, short count, DialogPtr theDialog, long *magicCookie);
extern pascal void CMSetupItem(short procID, const void *theConfig, short count, DialogPtr theDialog, short *theItem, long *magicCookie);
extern pascal void CMSetupXCleanup(short procID, const void *theConfig, short count, DialogPtr theDialog, Boolean OKed, long *magicCookie);
extern pascal void CMSetupPostflight(short procID);
extern pascal Ptr CMGetConfig(ConnHandle hConn);
extern pascal short CMSetConfig(ConnHandle hConn, const void *thePtr);
extern pascal OSErr CMIntlToEnglish(ConnHandle hConn, const void *inputPtr, Ptr *outputPtr, short language);
extern pascal OSErr CMEnglishToIntl(ConnHandle hConn, const void *inputPtr, Ptr *outputPtr, short language);
extern pascal long CMAddSearch(ConnHandle hConn, ConstStr255Param theString, CMSearchFlags flags, ConnectionSearchCallBackUPP callBack);
extern pascal void CMRemoveSearch(ConnHandle hConn, long refnum);
extern pascal void CMClearSearch(ConnHandle hConn);
extern pascal CMErr CMGetConnEnvirons(ConnHandle hConn, ConnEnvironRec *theEnvirons);
extern pascal short CMChoose(ConnHandle *hConn, Point where, ConnectionChooseIdleUPP idle);
extern pascal void CMEvent(ConnHandle hConn, const EventRecord *theEvent);
extern pascal void CMGetToolName(short procID, Str255 name);
extern pascal short CMGetProcID(ConstStr255Param name);
extern pascal void CMSetRefCon(ConnHandle hConn, long refCon);
extern pascal long CMGetRefCon(ConnHandle hConn);
extern pascal long CMGetUserData(ConnHandle hConn);
extern pascal void CMSetUserData(ConnHandle hConn, long userData);
extern pascal void CMGetErrorString(ConnHandle hConn, short id, Str255 errMsg);
extern pascal CMErr CMNewIOPB(ConnHandle hConn, CMIOPBPtr *theIOPB);
extern pascal CMErr CMDisposeIOPB(ConnHandle hConn, CMIOPBPtr theIOPB);
extern pascal CMErr CMPBRead(ConnHandle hConn, CMIOPBPtr theIOPB, Boolean async);
extern pascal CMErr CMPBWrite(ConnHandle hConn, CMIOPBPtr theIOPB, Boolean async);
extern pascal CMErr CMPBIOKill(ConnHandle hConn, CMIOPBPtr theIOPB);
#endif
#if PRAGMA_ALIGN_SUPPORTED
#pragma options align=reset
#endif
#if PRAGMA_IMPORT_SUPPORTED
#pragma import off
#endif
#ifdef __cplusplus
}
#endif
#endif /* __CONNECTIONS__ */